The continuing spread of digital media has led to a proliferation of video encoding standards, such as MPEG-4, H.263, H.264, DIVX, and XVID. These video standards attempt to balance compression of raw data and quality of video playback. Most video compression techniques use temporal and spatial prediction to compress raw video streams. However, each of the standards calls for different specific operations.
In addition to the proliferation of competing video standards, more devices are being marketed which include video encoding or decoding functionality. The manufacturers of these devices must decide which video standards to support, which requires balancing the costs associated with supporting a given video standard against the value added by supporting that standard.
Typically, support for a video standard can be implemented one of two ways. Either support is provided via software, or via a specialized hardware. Software implementations require that the processor in the device perform all of the encoding or decoding operations, which can be a computationally expensive task, and often cannot be performed in real-time by a general-purpose processor. Hardware implementations typically require a completely separate encoder for each video standard supported, with the associated expenses of developing, manufacturing, and powering the related hardware.